/* 斐波那契数

斐波那契数 序列有这样的公式： Fn = Fn-1 + Fn-2。换句话说，下一个数字是前两个数字的和。

前两个数字是 1，然后是 2(1+1)，然后 3(1+2)，5(2+3) 等：1, 1, 2, 3, 5, 8, 13, 21...。

斐波那契数与 黄金比例 以及我们周围的许多自然现象有关。

编写一个函数 fib(n) 返回第 n 个斐波那契数

P.S. 函数运行速度要快，对 fib(77) 的调用不应该超过几分之一秒 */

const fib = (n) => {
  let [a, b, c] = [1, 1, 2];
  let [d, e, f] = [0, 0, 0];

  if (n == 1) {
    return a;
  } else if (n == 2) {
    return b;
  } else if (n == 3) {
    return c;
  } else {
    for (let i = 0; i != n - 3; i++) {
      [f, e, d] = [b + c, c, a];
      [a, b, c] = [d, e, f];
    }
    return f;
  }
};

console.log(fib(3)); // 2
console.log(fib(4)); // 3
console.log(fib(7)); // 13
console.log(fib(77)); // 5527939700884757
